package com.diandi.activity.bean;

import com.alibaba.fastjson.annotation.JSONField;
import com.diandi.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 奖券表
 *
 */
public class LotteryTicket extends BaseEntity {

	// 标题
	private String title;
	// 活动ID
	private Long activityId;
	// 类型
	private Integer type;
	// 互动类型
	private Integer interactiveType;
	// 发放方式
	private Integer grantMode;
	// 领取链接
	private String receiveUrl;
	// 投资最小金额(0不限制)
	private Double investMiniAmount;
	// 标的类型
	private Integer borrowType;
	// 优惠券金额
	private Double amount;
	// 加息点
	private Double addInterest;
	// 有效期类型
	private Integer validTermType;
	// 有效期限(天)
	private Integer validTerm;
	// 生成张数(0为无限制)
	private Long generateNum;
	// 限制每人张数(0为无限制)
	private Long limitApieceNum;
	// 限制人数
	private Long limitPeopleNum;
	// 领取张数
	private Long alreadyReceiveNum;
	// 开始时间
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	private Date startTime;
	// 结束时间
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	private Date endTime;
	// 状态(0未生效1生效2失效3已关联)
	private Integer status;
	// 备注
	private String memo;
	// 操作人id
	private Long staffId;
	// 操作人名称
	private String staffName;
	// 指定时间范围 启
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	private Date validDayStart;
	// 指定时间范围 止
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	private Date validDayEnd;
	// 已领取人数
	private Long alreadyReceivePeopleNum;
	// 直抵优惠券投资比例
	private String investRatio;
	/**
	 * 加息率
	 */
	private Double addInterestRate;

	/**
	 * 加息天数
	 */
	private Integer addInterestDays;

	/**
	 * 最大投资金额
	 */
	private Double maxInvestAmount;

	/**
	 * (适用标类型3-新手标,1-活期宝,2-优选计划,0-散标)
	 */
	private String borrowTypes;

	/**
	 * (适用标类型1-PC,2-APP,3-触屏版)
	 */
	private String publishPlatforms;

	/**
	 * 体验金类型(0固定额度，1投资金额)
	 */
	private Integer tasteType;

	/**
	 * 生息天数
	 */
	private Integer tasteRateDays;

	/**
	 * 赠送得体验金上限
	 */
	private Double maxTasteAmount;

	// 投资返现当前剩余金额
	private Double investBackCurrentAmount;
	// 投资返现率
	private Double investBackRate;

	/**
	 * 奖池总额
	 */
	private Double ticketAllAmount;

	/**
	 * 加息类型:1自定义加息时长，2按投资产品期限
	 */
	private Integer addInterestType;

	/**
	 * 标的借款期限(月)
	 */
	private String borrowLoanPeriods;
	
	/**
	 * 积分类型(1.按固定数值赠送,2.按公式计费赠送,3.无规律类型)
	 */
	private Integer integralType;

	/**
	 * 积分倍数
	 */
	private BigDecimal integralRatio;

	/**
	 * 积分公式参数1
	 */
	private BigDecimal integralParamOne;

	/**
	 * 积分公式参数2
	 */
	private BigDecimal integralParamTwo;

	private Integer version;

	private Long oldTicketId;

	public Long getOldTicketId() {
		return oldTicketId;
	}

	public void setOldTicketId(Long oldTicketId) {
		this.oldTicketId = oldTicketId;
	}

	public Integer getIntegralType() {
		return integralType;
	}

	public void setIntegralType(Integer integralType) {
		this.integralType = integralType;
	}

	public BigDecimal getIntegralRatio() {
		return integralRatio;
	}

	public void setIntegralRatio(BigDecimal integralRatio) {
		this.integralRatio = integralRatio;
	}

	public BigDecimal getIntegralParamOne() {
		return integralParamOne;
	}

	public void setIntegralParamOne(BigDecimal integralParamOne) {
		this.integralParamOne = integralParamOne;
	}

	public BigDecimal getIntegralParamTwo() {
		return integralParamTwo;
	}

	public void setIntegralParamTwo(BigDecimal integralParamTwo) {
		this.integralParamTwo = integralParamTwo;
	}
	/**
	 * 免息类型  详见FreeTicketType
	 */
	private Integer freeTicketType;
	/**
	 * 免息比例
	 */
	private Double freeTicketValue;
	/**
	 * 使用还款类型 详见 RepaymentType
	 */
	private String repaymentTypes;

	public Double getInvestBackCurrentAmount() {
		return investBackCurrentAmount;
	}

	public void setInvestBackCurrentAmount(Double investBackCurrentAmount) {
		this.investBackCurrentAmount = investBackCurrentAmount;
	}

	public Double getInvestBackRate() {
		return investBackRate;
	}

	public void setInvestBackRate(Double investBackRate) {
		this.investBackRate = investBackRate;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Long getActivityId() {
		return activityId;
	}

	public void setActivityId(Long activityId) {
		this.activityId = activityId;
	}

	public Integer getType() {
		return type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	public Integer getInteractiveType() {
		return interactiveType;
	}

	public void setInteractiveType(Integer interactiveType) {
		this.interactiveType = interactiveType;
	}

	public Integer getGrantMode() {
		return grantMode;
	}

	public void setGrantMode(Integer grantMode) {
		this.grantMode = grantMode;
	}

	public String getReceiveUrl() {
		return receiveUrl;
	}

	public void setReceiveUrl(String receiveUrl) {
		this.receiveUrl = receiveUrl;
	}

	public Double getInvestMiniAmount() {
		return investMiniAmount;
	}

	public void setInvestMiniAmount(Double investMiniAmount) {
		this.investMiniAmount = investMiniAmount;
	}

	public Integer getBorrowType() {
		return borrowType;
	}

	public void setBorrowType(Integer borrowType) {
		this.borrowType = borrowType;
	}

	public Double getAmount() {
		return amount;
	}

	public void setAmount(Double amount) {
		this.amount = amount;
	}

	public Double getAddInterest() {
		return addInterest;
	}

	public void setAddInterest(Double addInterest) {
		this.addInterest = addInterest;
	}

	public Integer getValidTermType() {
		return validTermType;
	}

	public void setValidTermType(Integer validTermType) {
		this.validTermType = validTermType;
	}

	public Integer getValidTerm() {
		return validTerm;
	}

	public void setValidTerm(Integer validTerm) {
		this.validTerm = validTerm;
	}

	public Long getGenerateNum() {
		return generateNum;
	}

	public void setGenerateNum(Long generateNum) {
		this.generateNum = generateNum;
	}

	public Long getLimitApieceNum() {
		return limitApieceNum;
	}

	public void setLimitApieceNum(Long limitApieceNum) {
		this.limitApieceNum = limitApieceNum;
	}

	public Long getLimitPeopleNum() {
		return limitPeopleNum;
	}

	public void setLimitPeopleNum(Long limitPeopleNum) {
		this.limitPeopleNum = limitPeopleNum;
	}

	public Long getAlreadyReceiveNum() {
		return alreadyReceiveNum;
	}

	public void setAlreadyReceiveNum(Long alreadyReceiveNum) {
		this.alreadyReceiveNum = alreadyReceiveNum;
	}

	public Date getStartTime() {
		return startTime;
	}

	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public String getMemo() {
		return memo;
	}

	public void setMemo(String memo) {
		this.memo = memo;
	}

	public Long getStaffId() {
		return staffId;
	}

	public void setStaffId(Long staffId) {
		this.staffId = staffId;
	}

	public String getStaffName() {
		return staffName;
	}

	public void setStaffName(String staffName) {
		this.staffName = staffName;
	}

	public Date getValidDayStart() {
		return validDayStart;
	}

	public void setValidDayStart(Date validDayStart) {
		this.validDayStart = validDayStart;
	}

	public Date getValidDayEnd() {
		return validDayEnd;
	}

	public void setValidDayEnd(Date validDayEnd) {
		this.validDayEnd = validDayEnd;
	}

	public Long getAlreadyReceivePeopleNum() {
		return alreadyReceivePeopleNum;
	}

	public void setAlreadyReceivePeopleNum(Long alreadyReceivePeopleNum) {
		this.alreadyReceivePeopleNum = alreadyReceivePeopleNum;
	}

	public String getInvestRatio() {
		return investRatio;
	}

	public void setInvestRatio(String investRatio) {
		this.investRatio = investRatio;
	}

	public Double getAddInterestRate() {
		return addInterestRate;
	}

	public void setAddInterestRate(Double addInterestRate) {
		this.addInterestRate = addInterestRate;
	}

	public Integer getAddInterestDays() {
		return addInterestDays;
	}

	public void setAddInterestDays(Integer addInterestDays) {
		this.addInterestDays = addInterestDays;
	}

	public Double getMaxInvestAmount() {
		return maxInvestAmount;
	}

	public void setMaxInvestAmount(Double maxInvestAmount) {
		this.maxInvestAmount = maxInvestAmount;
	}

	public String getBorrowTypes() {
		return borrowTypes;
	}

	public void setBorrowTypes(String borrowTypes) {
		this.borrowTypes = borrowTypes;
	}

	public String getPublishPlatforms() {
		return publishPlatforms;
	}

	public void setPublishPlatforms(String publishPlatforms) {
		this.publishPlatforms = publishPlatforms;
	}

	public Integer getTasteType() {
		return tasteType;
	}

	public void setTasteType(Integer tasteType) {
		this.tasteType = tasteType;
	}

	public Integer getTasteRateDays() {
		return tasteRateDays;
	}

	public void setTasteRateDays(Integer tasteRateDays) {
		this.tasteRateDays = tasteRateDays;
	}

	public Double getMaxTasteAmount() {
		return maxTasteAmount;
	}

	public void setMaxTasteAmount(Double maxTasteAmount) {
		this.maxTasteAmount = maxTasteAmount;
	}

	public Double getTicketAllAmount() {
		return ticketAllAmount;
	}

	public void setTicketAllAmount(Double ticketAllAmount) {
		this.ticketAllAmount = ticketAllAmount;
	}

	public Integer getAddInterestType() {
		return addInterestType;
	}

	public void setAddInterestType(Integer addInterestType) {
		this.addInterestType = addInterestType;
	}

	public String getBorrowLoanPeriods() {
		return borrowLoanPeriods;
	}

	public void setBorrowLoanPeriods(String borrowLoanPeriods) {
		this.borrowLoanPeriods = borrowLoanPeriods;
	}

	public Integer getFreeTicketType() {
		return freeTicketType;
	}

	public void setFreeTicketType(Integer freeTicketType) {
		this.freeTicketType = freeTicketType;
	}

	public Double getFreeTicketValue() {
		return freeTicketValue;
	}

	public void setFreeTicketValue(Double freeTicketValue) {
		this.freeTicketValue = freeTicketValue;
	}

	public String getRepaymentTypes() {
		return repaymentTypes;
	}

	public void setRepaymentTypes(String repaymentTypes) {
		this.repaymentTypes = repaymentTypes;
	}

	public Integer getVersion() {
		return version;
	}

	public void setVersion(Integer version) {
		this.version = version;
	}
}
